#include "Palabras.h"
#include "archivoTexto.h"

Palabras::Palabras() {
	this->palabras = new Lista<Palabra*>(new ComparadorSimpleAscendente<Palabra*>());
}

Palabras::~Palabras() {
	delete palabras;
}

Lista<Palabra*>* Palabras::getPalabras() {
	return this->palabras;
}

void Palabras::agregarPalabra(Palabra* palabra) {

	IteradorLista<Palabra*> iterador = this->palabras->iterador();

	bool esStopWord = false;
	string stopWord;
	ArchivoTexto archivoStopWords("StopWords.txt");
	archivoStopWords.irAlPrincipio();

	//busca si es alguna stop word, en tal caso no hace nada
	while(archivoStopWords.leerLinea(stopWord)){
		if(stopWord == palabra->getValor())
			esStopWord = true;
	}

	if(!esStopWord){

		bool encontrado = false;

		while(iterador.tieneSiguiente()){
			Palabra* pal = iterador.siguiente();

			if(pal->getValor() == palabra->getValor()){
				pal->aumentarFrecuencia();
				encontrado  = true;
			}

		}

		if (!encontrado) {
			palabra->setFrecuencia(1);
			this->palabras->agregar(palabra);
		}

	}

}

string Palabras::toString() {

	string s = "";

	IteradorLista<Palabra*> iterador = this->palabras->iterador();

	while(iterador.tieneSiguiente()){
		Palabra* actual = iterador.siguiente();
		stringstream ss;

		ss << actual->getFrecuencia();

		s += "[" + actual->getValor() + "," + ss.str() + "]";
	}

	return s;
}
